<?php

class Solicitudes_Model_DetalleAutoevaluacion extends Model_Cna {
	
	
	public function __construct() {
		parent::__construct();
	}
	
	/**
	 * Obtiene los datos del comité de auotevaluación de una IES
	 * @param $codinstitucion Código de la IES
	 * @return array
	 */
	public function getComiteIES($codinstitucion) {
		$Table = new Solicitudes_Model_DbTable_Comite();
		return $Table->getComiteIES($codinstitucion);
//		return $Table->fetchAll("codinstitucion={$codinstitucion}");
	}

	/**
	 * Almacena los datos del comité de auotevaluación de una IES
	 * @param array $datos Los datos del comité de auotevaluación
	 */
	public function guardarComite($datos) {
	    //$datos = $this->forceEmptyAsNull($datos);
		$Table = new Solicitudes_Model_DbTable_Comite();

		if(isset($datos["codcomite"]) && !empty($datos["codcomite"])) {
			$row = $Table->find($datos["codcomite"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codcomite"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	
	/**
	 * Almacena los datos del archivo adjunto del comité de autoevaluación
	 * @param array $datos Los datos del registro
	 */
	public function guardarAdjuntoComite($datos) {
		$adjuntoTable = new Generales_Model_DbTable_Documentos();
		return $adjuntoTable->createRow($datos)->save();
	}
	
	/**
	 * Almacena los datos de los miembros del comite
	 * @param Array $datos Los datos del registro
	 */
	public function guardarmiembro($datos) {
		$Table = new Solicitudes_Model_DbTable_Miembros();

		if(isset($datos["codmiembro"]) && !empty($datos["codmiembro"])) {
			$row = $Table->find($datos["codmiembro"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codmiembro"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos de un miembro
	 * @param integer $codmiembro Código del miembro
	 * @return array
	 */
	public function getMiembro($codmiembro) {
		$Table = new Solicitudes_Model_DbTable_Miembros();
		return $Table->find($codmiembro)->current()->toArray();
	}
	/**
	 * Eliminar el registro de un miembro
	 * @param integer $codmiembro Código del miembro
	 * @return Boolean
	 */
	public function eliminarMiembro($codmiembro) {
		$Table = new Solicitudes_Model_DbTable_Miembros();
		return $Table->delete("codmiembro={$codmiembro}");
	}
	
	/**
	 * Obtiene la lista de miembros del comité de autoevalución
	 * @param integer $codigo Código del comité o del programa
	 * @param string $tipo 'C'= Comite 'P'= Programa
	 * @param array Datos de los miembros del comité
	 */
	public function getMiembros($codigo,$tipo) {
	    $Table = new Solicitudes_Model_DbTable_Miembros();
	    $where = ($tipo=="C")?"codcomite={$codigo}":"codprograma={$codigo}";;
		return $Table->fetchAll($where);
	}

	/**
	 * Obtiene la cantidad de miembros del comité de autoevalución
	 * @param integer $codigo Código del comité o del programa
	 * @param string $tipo 'C'= Comite 'P'= Programa
	 * @param Integer  Número de los miembros del comité
	 */
	public function getCountMiembros($codigo,$tipo) {
	    $miembros = $this->getMiembros($codigo,$tipo);
		return count($miembros);
	}
	
	
	/**
	 * Crea o actualiza un objetivo de la autoevaluación
	 * @param integer $codproceso
	 * @param array $values
	 */
	public function guardarObjetivoAutoevalacion($codproceso, array $values) {
		$Table = new Solicitudes_Model_DbTable_ObjetivosAutoevaluacion();
		if(isset($values["codobjetivo"]) && !empty($values["codobjetivo"])) {
			$Table->find($values["codobjetivo"])->current()->setFromArray($values)->save();
		} else {
			unset($values["codobjetivo"]);
			$orden = $Table->nextOrden($codproceso);
			$row = $Table->createRow();
			$row->setFromArray($values);
			$row->codproceso = $codproceso;
			$row->orden = $orden;
			$row->save();
		}
	}
	
	/**
	 * Actualiza el orden de los objetivos de autoevaluación
	 * @param integer $codproceso
	 * @param array $orden Array con los objetivos en el orden que deben ser fijados
	 */
	public function guardarOrdenObjetivos($codproceso, $orden) {
		if(!is_array($orden) || count($orden) < 1) {
			return;
		}
		$Table = new Solicitudes_Model_DbTable_ObjetivosAutoevaluacion();
		$Table->guardarOrdenObjetivos($codproceso, $orden);
	}
	
	/**
	 * Elimina un objetivo de autoevalaución
	 * @param integer $codobjetivo
	 */
	public function eliminarObjetivo($codobjetivo) {
		$Table = new Solicitudes_Model_DbTable_ObjetivosAutoevaluacion();
		$row = $Table->find($codobjetivo)->current();
		$codproceso = $row->codproceso;
		$row->delete();
		$Table->resetOrdenObjetivos($codproceso);
	}
	
	/**
	 * Obtiene un item de la agenda de una sesion
	 * @param integer $codagenda
	 * @return array con los datos del registro del item de la agenda
	 */
	public function getObjetivo($codobjetivo) {
		$Table = new Solicitudes_Model_DbTable_ObjetivosAutoevaluacion();
		return $Table->find($codobjetivo)->current()->toArray();
	}
	
	/**
	 * Obtiene todos los items de la agenda de una sesion
	 * @param integer $codsesion
	 * @return array registros de los items de la agenda de la sesion
	 */
	public function getObjetivos($codproceso) {
		$Table = new Solicitudes_Model_DbTable_ObjetivosAutoevaluacion();
		return $Table->getObjetivos($codproceso);
	}

	/**
	 * Obtiene la cantidad e los  items de la agenda de una sesion
	 * @param integer $codsesion
	 * @return Integer cantidad de registros de los items
	 */
	public function getCountObjetivos($codproceso) {
		$objetivos = $this->getObjetivos($codproceso);
		return count($objetivos);
	}
	
	/**
	 * Almacena los datos de un instrumento de autoevaluación
	 * @param Array $datos Los datos del registro
	 * @return integer $codinstrumento Código del instrumento
	 */
	public function guardarInstrumentoAutoevaluacion($datos, $tipopoblacion = null) {
		$table = new Solicitudes_Model_DbTable_InstrumentosAutoevaluacion();

		if(isset($datos["codinstrumento"]) && !empty($datos["codinstrumento"])) {
			$row = $table->find($datos["codinstrumento"])->current();
			return $row->setFromArray($datos)->save();
		} else {
		    try {
    			unset($datos["codinstrumento"]);
    			$table->getAdapter()->beginTransaction();
    			$key = $table->createRow($datos)->save();

    			$poblacion = new Solicitudes_Model_DbTable_Poblacion();
    			//TODO consultar del sistema externo para traer los datos
    			if(is_numeric($datos["muestrareal"])) {
    			    $datospoblacion = array();
    			    $datospoblacion["codinstrumento"] = $key;
    			    $datospoblacion["tipopoblacion"] = "ADMIN";
    			    for($i=0; $i<$datos["muestrareal"]; $i++) {
    			        $datospoblacion["nombre"] = uniqid("user_");
    			        $datospoblacion["correo"] = $datospoblacion["nombre"] . "@gmail.com";
    			        $datospoblacion["id"] = uniqid(null, true);
        			    $poblacion->insert($datospoblacion);
    			    }
    			}
    			
    			$table->getAdapter()->commit();
    			return $key;
		    } catch (Exception $e) {
		        $table->getAdapter()->rollBack();
		        throw $e;
		    }
		}
	}
	/**
	 * Obtiene los datos de un instrumento de autoevaluación
	 * @param integer $codinstrumento
	 * @return array con los datos del registro del instrumento de autoevaluación
	 */
	public function getInstrumento($codinstrumento) {
		$Table = new Solicitudes_Model_DbTable_InstrumentosAutoevaluacion();
		return $Table->find($codinstrumento)->current()->toArray();
	}
	
	/**
	 * Obtiene todos los instrumentos de autoevaluación
	 * @param integer $codinstrumento
	 * @return array registros de los instrumentos de autoevaluación
	 */
	public function getInstrumentos($codproceso) {
		$Table = new Solicitudes_Model_DbTable_InstrumentosAutoevaluacion();
		return $Table->getInstrumentos($codproceso);
	}
	
	/**
	 * Obtiene todos los instrumentos de autoevaluación
	 * @param integer $codinstrumento
	 * @return array registros de los instrumentos de autoevaluación
	 */
	public function getCountInstrumentos($codproceso) {
	    $instrumentos = $this->getInstrumentos($codproceso);
		return count($instrumentos);
	}
		
	/**
	 * Almacena los datos de un archivo adjunto a una herramienta de autoevaluación
	 * @param array $datos Los datos para el registro
	 */
	public function guardarAdjuntoInstrumento($datos) {
		$adjuntoTable = new Generales_Model_DbTable_Documentos();
		return $key = $adjuntoTable->createRow($datos)->save();
	}
	/**
	 * Elimina un instrumento de autoevalaución
	 * @param integer $codinstrumento
	 */
	public function eliminarInstrumento($codinstrumento) {
		$Table = new Solicitudes_Model_DbTable_InstrumentosAutoevaluacion();
	    $datos_instrumento = $this->getInstrumento($codinstrumento);
		$Table->delete("codinstrumento={$codinstrumento}");
		if (!empty($datos_instrumento["coddocumento"])){
	        $adjunto = new Generales_Model_Documentos();
		    $adjunto->eliminarDocumento($datos_instrumento["coddocumento"]);
		}
	}
	/**
	 * Descargar la información de autoevalución en un documento word
	 * @param integer $codproceso código del proceso
	 * @param integer $codusuario código del usuario que realizó la autoevaluación
	 * @param integer $codlista código de la lista actual (plantilla de autoevaluación)
	 * @return string $html Información de la autoevalución del proceso
	 */
	public function descargarWord($codproceso,$codusuario,$codlista){
        $ServiceProceso = new Solicitudes_Model_DetalleSolicitud();
        $datosproceso = $ServiceProceso->cargardatosProceso($codproceso);
        $infoPrograma = $ServiceProceso->cargardatosPrograma($datosproceso["codprograma"]);
        $html  = $this->encabezadoWord($infoPrograma);
        $html .= "<br/>";
	    $html .= $this->miembrosWord($datosproceso["codprograma"],"P");
        $html .= "<br/>";
	    
        if (!empty($codlista)){
            $listaService = new Listas_Model_DiligenciarListas();
            $datos_diligencia["codlista"]= $codlista;
            $datos_diligencia["codproceso"]=$codproceso;
            $datos_diligencia["codusuario"]=$codusuario;
            $informacion = $listaService->getDiligenciaTramiteLista($datos_diligencia,1);
            $html .= $this->informacionWord($informacion);
        }
        
        $html .= "<br/>";
		$html .='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td align="center"><H2>METODOLOGÍA</H2><BR></td>';
		$html .='</tr>';
		$html .= "<br/>";
        $objetivos = $this->getObjetivos($codproceso);
        $html .= $this->objetivosWord($objetivos);
        $html .= "<br/>";
        $html .= $this->metodologiaWord($datosproceso["metodologiaautoevaluacion"]);
        $html .= "<br/>";
        $instrumentos = $this->getInstrumentos($codproceso);
        $html .= $this->instrumentosWord($instrumentos);
        $html .= "<br/>";
        $html .= $this->fuentesWord($datosproceso);
        $html .= "<br/>";
        $html .= $this->escalasWord($codlista, $codproceso);
        $html .= "<br/>";

	    if (!empty($codlista)){
            $datos_diligencia["codlista"]= $codlista;
            $datos_diligencia["codproceso"]=$codproceso;
            $datos_diligencia["codusuario"]=$codusuario;
            $datos_tramite = $listaService->getDiligenciaTramiteLista($datos_diligencia,3);
            $html .= $this->ponderacionWord($datos_tramite);
            $html .= $this->valoracionWord($datos_tramite);
        }
        //jjj

        
        return $html;
	}
	/**
	 * Obtiene la lista de miembros del comité de autoevalución para el informe en word
	 * @param integer $codigo Código del comité o del programa
	 * @param string $tipo 'C'= Comite 'P'= Programa
	 * @param array Datos de los miembros del comité
	 */
	
	public function miembrosWord($codigo,$tipo){
        $miembros = $this->getMiembros($codigo,$tipo);
        $html ='No existen registros de miembros';
		if(count($miembros)>0){
		    $html ='<table  width="95%" align="center">';
			$html .='  <thead>';
			$html .='    <tr>';
			$html .='      <th><H2>COMITÉ DEL PROGRAMA</H2></th>';
			$html .='    </tr>';
			$html .='  </thead>';
			$html .='</table><BR/>';
			$html .='<table  width="95%" align="center" border="1">';
			$html .='  <thead>';
			$html .='    <tr>';
			$html .='      <th width="34%">Nombre</th>';
			$html .='      <th width="33%">Cargo</th>';
			$html .='      <th width="33%">Dependencia</th>';
			$html .='    </tr>';
			$html .='  </thead>';
			$html .='  <tbody>';
			foreach ($miembros as $value):
				$html .='    <tr>';
				$html .='      <td>'.$value["nombremiembro"].'</td>';
				$html .='      <td>'.$value["cargo"].'</td>';
				$html .='      <td>'.$value["dependencia"].'</td>';
				$html .='      </td>';
				$html .='    </tr>';
			endforeach;
			$html .='  </tbody>';
			$html .='</table>';
		}
		return $html;
	}
	/**
	 * Retorna en un string los datos de un programa para el reporte word
	 * @param Array $infoPrograma Datos del programa
	 * @return String $html
	 */
	function encabezadoWord($infoPrograma){
	    $appConfig = Zend_Registry::get("appConfig");
	    $fecha_inicio = new Zend_Date($infoPrograma["fechainicio"]);
		$html  ='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td colspan="2" align="center"><H1>INFORME DE AUTOEVALUACIÓN</H1><BR><BR></td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><B>Código SNIES</B></td>';
		$html .='   <td>'.$infoPrograma["codsnies"].'</td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><B>Nombre - Lugar ofrecimiento</B></td>';
		$html .='   <td>'.$infoPrograma["nombreprograma"].' - '.$infoPrograma["ubicacion"].'</td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><B>Título - Número de créditos</B></td>';
		$html .='   <td>'.$infoPrograma["titulo"].' - '.$infoPrograma["numerocreditos"].'</td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><B>Metodología - Nivel</B></td>';
		$html .='   <td>'.$infoPrograma["nombremetodologia"].' - '.$infoPrograma["nombrenivel"].'</td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><B>Fecha de registro del sistema </B></td>';
		$html .='   <td>'.$fecha_inicio->toString($appConfig->fecha_formato_mostrar).'</td>';
		$html .='</tr>';
		$html .='</table>';
        return $html;
	}
	/**
	 * Retorna en un string los datos de un programa para el reporte word
	 * @param Array $infoPrograma Datos del programa
	 * @return String $html
	 */
	function informacionWord($infoPrograma){
		$html  ='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td align="center"><H2>INFORMACIÓN PARA LA AUTOEVALUACIÓN</H2></td>';
		$html .='</tr>';
		foreach($infoPrograma as $datos){
			$html .='<tr>';
			$html .='	<td><H3>'.$datos["nombre"].'</H3></td>';
			$html .='</tr>';
			$html .='<tr>';
			$html .='	<td>'.$datos["sintesis"].'<BR></td>';
			$html .='</tr>';
		}
		$html .='</table>';
        return $html;
	}
	
	/**
	 * Retorna en un string con los objetivos de la autoevaluación para el reporte word
	 * @param Array $objetivos Objetivos de la autoevaluación
	 * @return String $html
	 */
	function objetivosWord($objetivos){
		$html  ='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td><H3>OBJETIVOS</H3></td>';
		$html .='</tr>';
		foreach($objetivos as $datos){
			$html .='<tr>';
			$html .='	<td>'.$datos["texto"].'<BR></td>';
			$html .='</tr>';
		}
		$html .='</table>';
        return $html;
	}
	/**
	 * Retorna en un string la metodología de la autoevaluación para el reporte word
	 * @param String $metodologia Metodología de la autoevaluación
	 * @return String $html
	 */
	function metodologiaWord($metodologia){
		$html  ='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td><H3>DESCRIPCIÓN DE LA METODOLOGÍA</H3></td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td>'.$metodologia.'<BR></td>';
		$html .='</tr>';
		$html .='</table>';
        return $html;
	}
	/**
	 * Retorna en un string con los instrumentos de la autoevaluación para el reporte word
	 * @param Array $instrumentos Instrumentos de la autoevaluación
	 * @return String $html
	 */
	function instrumentosWord($instrumentos){
	    $domConfig = Zend_Registry::get('domConfig');
		$html  ='<table width="95%" align="center" border="0">';
		$html .='<tr>';
		$html .='	<td colspan="3"><H3>INSTRUMENTOS DE INFORMACIÓN</H3></td>';
		$html .='</tr>';
		$html .='    <tr>';
		$html .='      <th width="34%">Nombre</th>';
		$html .='      <th width="33%">Tipo</th>';
		$html .='      <th width="33%">Descripción</th>';
		$html .='    </tr>';
		foreach($instrumentos as $datos){
		    $tipo = ($datos["tipo"]!=3)?$domConfig->TIPOINSTRUMENTO->$datos["tipo"]:$datos["otrotipo"];
			$html .='<tr>';
			$html .='	<td>'.$datos["nombre"].'</td>';
			$html .='	<td>'.$tipo.'</td>';
			$html .='	<td>'.$datos["descripcion"].'</td>';
			$html .='</tr>';
		}
		$html .='</table>';
        return $html;
	}
	/**
	 * Retorna en un string la metodología de la autoevaluación para el reporte word
	 * @param Array $datos datos de las fuentes de la autoevaluación
	 * @return String $html
	 */
	function fuentesWord($datos){
		$html ='<table width="95%" align="center" border="0">';
		if(!empty($datos["fuentesdocumentales"])){
			$html .='<tr>';
			$html .='	<td><H3>FUENTES DOCUMENTALES</H3></td>';
			$html .='</tr>';
			$html .='<tr>';
			$html .='	<td>'.$datos["fuentesdocumentales"].'<BR></td>';
			$html .='</tr>';
		}
		if(!empty($datos["fuentesdocumentales"])){
			$html .='<tr>';
			$html .='	<td><H3>FUENTES NO DOCUMENTALES</H3></td>';
			$html .='</tr>';
			$html .='<tr>';
			$html .='	<td>'.$datos["fuentesnodocumentales"].'<BR></td>';
			$html .='</tr>';
		}
		$html .='<tr>';
		$html .='	<td><H3>JUSTIFICACIÓN MÉTODO</H3></td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td>'.$datos["sintesisponderacion"].'<BR></td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td><H3>JUSTIFICACIÓN ESCALA</H3></td>';
		$html .='</tr>';
		$html .='<tr>';
		$html .='	<td>'.$datos["sintesisgradacion"].'<BR></td>';
		$html .='</tr>';
		$html .='</table>';
        return $html;
	}
	/**
	 * Retorna en un string el listado de las escalas de la autoevaluación para el reporte word
	 * @param Array $datos_escala datos de las escalas de la autoevaluación
	 * @return String $html
	 */
    function escalasWord($codlista, $codproceso){
        $escalasService = new Listas_Model_Escalas();
        $datos_escala = $escalasService->getEscalasGradacionProceso($codlista, $codproceso);
        $html ='No existen registros de escalas';
		if(count($datos_escala)>0){
			$html ='<table width="95%" align="center" border="0">';
	  		$html .='<thead>';
			$html .='    <tr>';
			$html .='      <th width="50%" rowspan="2">Grado de cumplimiento</th>';
			$html .='      <th width="10%" rowspan="2">Gradación no numérica</th>';
			$html .='      <th width="20%" colspan="2">Gradación numérica</th>';
			$html .='      <th width="20%" colspan="2">Valor porcentaje</th>';
			$html .='    </tr>';
			$html .='    <tr>';
			$html .='      <th>desde</th>';
			$html .='      <th>hasta</th>';
			$html .='      <th>desde</th>';
			$html .='      <th>hasta</th>';
			$html .='    </tr>';
			$html .='  </thead>';
			$html .='  <tbody>';
		    foreach ($datos_escala as $index => $value):
				$html .='    <tr>';
				$html .='      <td>'.$value["nombre"].'</td>';
				$html .='      <td style="text-align:center;">'.$value["gradononumerico"].'</td>';
				$html .='      <td style="text-align:center;">';
				if (!empty($value["pesoinferior"]))	$html .=' desde '.$value["pesoinferior"];
				$html .='		</td>';
				$html .='      <td style="text-align:center;">';
				if (!empty($value["pesosuperior"])) $html .=' hasta '.$value["pesosuperior"];
				$html .='		</td>';
				$html .='      <td style="text-align:center;">';
				if (!empty($value["porcentajeinferior"])) $html .=' desde '.$value["porcentajeinferior"];
				$html .='		</td>';
				$html .='      <td style="text-align:center;">';
				if (!empty($value["porcentajesuperior"])) $html .=' hasta '.$value["porcentajesuperior"];
				$html .='		</td>';
	  		endforeach;
			$html .='  </tbody>';
			$html .='</table>';
		}
		return $html;
    }

	/**
	 * Retorna en un string los datos de ponderación para el reporte word
	 * @param Array $datos_tramite Datos de ponderación
	 * @return String $html
	 */
	function ponderacionWord($datos_tramite){
		$html  ='<table width="95%" align="center" >';
		$html .='<tr>';
		$html .='	<td align="center"><H3>PONDERACIÓN DE FACTORES Y CARACTERÍSTICAS</H3></td>';
		$html .='</tr>';
		
		$Rcodseccionlista = $datos_tramite[0]["codseccionlista"];
        $html .= '<tr>';
        $html .= '	<td><H4>FACTOR ' . $datos_tramite[0]["ordenseccion"] . '. '. $datos_tramite[0]["nombreseccion"] . '</H4></td>';
        $html .= '</tr>';
        $html .= '<tr>';
        $html .= '	<td><B>Peso: </B>' . $datos_tramite[0]["pesoseccion"] . '<BR></td>';
        $html .= '</tr>';
        $html .= '<tr>';
        $html .= '	<td><B>Justificación: </B>' . $datos_tramite[0]["jusseccion"] . '<BR></BR></td>';
        $html .= '</tr>';
		
		foreach($datos_tramite as $datos){
		    if ($Rcodseccionlista != $datos["codseccionlista"]){
                $html .= '<tr>';
                $html .= '	<td><BR></BR><H4>FACTOR ' . $datos["ordenseccion"] . '. ' . $datos["nombreseccion"] . '</H4></td>';
                $html .= '</tr>';
                $html .= '<tr>';
                $html .= '	<td><B>Peso: </B>' . $datos["pesoseccion"] . '<BR></td>';
                $html .= '</tr>';
                $html .= '<tr>';
                $html .= '	<td><B>Justificación: </B>' . $datos["jusseccion"] . '<BR></BR></td>';
                $html .= '</tr>';
                $Rcodseccionlista = $datos["codseccionlista"];
		    }
		    
	        $html .= '<tr>';
	        $html .= '	<td><B>' . $datos["ordenelemento"] . '. '. $datos["nombre"] . '</B></td>';
	        $html .= '</tr>';
	        $html .= '<tr>';
	        $html .= '	<td><B>Peso: </B>' . $datos["pesoelemento"] . '<BR></td>';
	        $html .= '</tr>';
	        $html .= '<tr>';
	        $html .= '	<td><B>Justificación: </B>' . $datos["juselemento"] . '<BR></BR></td>';
	        $html .= '</tr>';
		}
		$html .='</table>';
        return $html;
	}
	
	/**
	 * Retorna en un string los datos de valoración para el reporte word
	 * @param Array $datos_tramite Datos de valoración
	 * @return String $html
	 */
	function valoracionWord($datos_tramite){
//		Zend_Debug::dump($datos_tramite);
		$html  ='<table width="95%" align="center" >';
		$html .='<tr>';
		$html .='	<td align="center"><H2>VALORACIÓN DE FACTORES Y CARACTERÍSTICAS</H2></td>';
		$html .='</tr>';
		
		$Rcodseccionlista = $datos_tramite[0]["codseccionlista"];
        $html .= '<tr>';
        $html .= '	<td><H4>FACTOR ' . $datos_tramite[0]["ordenseccion"] . '. '. $datos_tramite[0]["nombreseccion"] . '</H4></td>';
        $html .= '</tr>';
        $html .= '<tr>';
        $html .= '	<td><B>Valoración: </B>' . $datos_tramite[0]["val"] . '  ' . $datos_tramite[0]["escalas"] . '<BR></td>';
        $html .= '</tr>';
        $html .= '<tr>';
        $html .= '	<td><B>Justificación: </B>' . $datos_tramite[0]["justificacion"] . '<BR></BR></td>';
        $html .= '</tr>';
		
		foreach($datos_tramite as $datos){
		    if ($Rcodseccionlista != $datos["codseccionlista"]){
                $html .= '<tr>';
                $html .= '	<td><BR></BR><H4>FACTOR ' . $datos["ordenseccion"] . '. ' . $datos["nombreseccion"] . '</H4></td>';
                $html .= '</tr>';
                $html .= '<tr>';
                $html .= '	<td><B>Valoración: </B>' . $datos["val"] . '  ' . $datos["escalas"] . '<BR></td>';
                $html .= '</tr>';
                $html .= '<tr>';
                $html .= '	<td><B>Justificación: </B>' . $datos["justificacion"] . '<BR></BR></td>';
                $html .= '</tr>';
                $Rcodseccionlista = $datos["codseccionlista"];
		    }
		    
	        $html .= '<tr>';
	        $html .= '	<td><B>' . $datos["ordenelemento"] . '. '. $datos["nombre"] . '</B></td>';
	        $html .= '</tr>';
	        $html .= '<tr>';
	        $html .= '	<td><B>Valoración: </B>' . $datos["valoracion"] . '  ' . $datos["escalae"] . '<BR></td>';
	        $html .= '</tr>';
	        $html .= '<tr>';
	        $html .= '	<td><B>Justificación: </B>' . $datos["justificacionvaloracion"] . '<BR></BR></td>';
	        $html .= '</tr>';
		}
		$html .='</table>';
        return $html;
	}


	/**
	 * Almacena los datos de las actividades de las extensiones
	 * @param Array $datos Los datos del registro
	 */
	public function guardar_extensionactividades($datos) {
		$Table = new Solicitudes_Model_DbTable_Actividadesextension();

		if(isset($datos["codactextension"]) && !empty($datos["codactextension"])) {
			$row = $Table->find($datos["codactextension"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codactextension"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos de una actividad de extension
	 * @param integer $codactextension Código de la actividad
	 * @return array
	 */
	public function getActividadextension($codactextension) {
		$Table = new Solicitudes_Model_DbTable_Actividadesextension();
		return $Table->find($codactextension)->current()->toArray();
	}
	/**
	 * Eliminar el registro de una actividad de extension
	 * @param integer $codactextension Código de la actividad
	 * @return Boolean
	 */
	public function eliminarActividadextension($codactextension) {
		$Table = new Solicitudes_Model_DbTable_Actividadesextension();
		return $Table->delete("codactextension={$codactextension}");
	}
	
	/**
	 * Obtiene la lista de las actividades de extensión del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de las actividades de extensión
	 */
	public function getActividadesextension($codproceso) {
	    $Table = new Solicitudes_Model_DbTable_Actividadesextension();
	    $where = "codproceso={$codproceso}";
		return $Table->fetchAll($where);
	}

	/**
	 * Almacena los datos de las financiaciones de las extensiones
	 * @param Array $datos Los datos del registro
	 */
	public function guardarExtensionfinanciacion($datos) {
		$Table = new Solicitudes_Model_DbTable_Financiacionextension();

		if(isset($datos["codfinextension"]) && !empty($datos["codfinextension"])) {
			$row = $Table->find($datos["codfinextension"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codfinextension"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos de una financiacion de extension
	 * @param integer $codactextension Código de la actividad
	 * @return array
	 */
	public function getFinanciacionextension($codfinextension) {
		$Table = new Solicitudes_Model_DbTable_Financiacionextension();
		return $Table->find($codfinextension)->current()->toArray();
	}
	/**
	 * Eliminar el registro de una financiacion de extension
	 * @param integer $codactextension Código de la actividad
	 * @return Boolean
	 */
	public function eliminarFinanciacionextension($codfinextension) {
		$Table = new Solicitudes_Model_DbTable_Financiacionextension();
		return $Table->delete("codactextension={$codfinextension}");
	}
	
	/**
	 * Obtiene la lista de las financiaciones de extensión del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de las actividades de extensión
	 */
	public function getFinanciacionesextension($codproceso) {
	    $Table = new Solicitudes_Model_DbTable_Financiacionextension();
	    $where = "codproceso={$codproceso}";
		return $Table->fetchAll($where);
	}
	
	/**
	 * Almacena los datos de los grupos de investigación
	 * @param Array $datos Los datos del registro
	 */
	public function guardarGrupoinvestigacion($datos) {
		$Table = new Solicitudes_Model_DbTable_Gruposinvestigacion();

		if(isset($datos["codgrupo"]) && !empty($datos["codgrupo"])) {
			$row = $Table->find($datos["codgrupo"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codgrupo"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return array
	 */
	public function getGrupoinvestigacion($codgrupo) {
		$Table = new Solicitudes_Model_DbTable_Gruposinvestigacion();
		return $Table->find($codgrupo)->current()->toArray();
	}
	/**
	 * Eliminar el registro de un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return Boolean
	 */
	public function eliminarGrupoinvestigacion($codgrupo) {
		$Table = new Solicitudes_Model_DbTable_Gruposinvestigacion();
		return $Table->delete("codgrupo={$codgrupo}");
	}
	
	/**Obtiene la lista de los grupos de investigación del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de  grupos de investigación
	 */
	public function getGruposinvestigacion ($codproceso) {
	    $Table = new Solicitudes_Model_DbTable_Gruposinvestigacion();
	    $where = "codproceso={$codproceso}";
		return $Table->fetchAll($where);
	}
	
	/**Obtiene en un array la lista de los grupos de investigación del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de  grupos de investigación
	 */
	public function getArraygruposinvestigacion ($codproceso) {
        $gruposinvestigacion = $this->getGruposinvestigacion ($codproceso);
		
        $array_grupos = array();
		foreach ($gruposinvestigacion as $value):
		    $array_grupos[$value["codgrupo"]] = $value["nombregrupo"];
		endforeach;
		
		return $array_grupos;
	}
	
	
	/**
	 * Almacena los datos de los proyectos de los grupos de investigación
	 * @param Array $datos Los datos del registro
	 */
	public function guardarProyectogrupoinvestigacion($datos) {
		$Table = new Solicitudes_Model_DbTable_Proyectosgruposinvestigacion();

		if(isset($datos["codproyecto"]) && !empty($datos["codproyecto"])) {
			$row = $Table->find($datos["codproyecto"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codproyecto"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos un proyecto de un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return array
	 */
	public function getProyectogrupoinvestigacion($codproyecto) {
		$Table = new Solicitudes_Model_DbTable_Proyectosgruposinvestigacion();
		return $Table->find($codproyecto)->current()->toArray();
	}
	/**
	 * Eliminar el registro de un proyecto de un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return Boolean
	 */
	public function eliminarProyectogrupoinvestigacion($codproyecto) {
		$Table = new Solicitudes_Model_DbTable_Proyectosgruposinvestigacion();
		return $Table->delete("codproyecto={$codproyecto}");
	}
	
	/**Obtiene la lista de los proyectos de los grupos de investigación del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de  grupos de investigación
	 */
	public function getProyectosgruposinvestigacion ($codproceso) {
	    $Table = new Solicitudes_Model_DbTable_Gruposinvestigacion();
	    return $Table->getProyectosgruposinvestigacion($codproceso);
	}
	
	/**
	 * Almacena los datos de las publicaciones de los proyectos de los grupos de investigación
	 * @param Array $datos Los datos del registro
	 */
	public function guardarPublicacionproyecto($datos) {
		$Table = new Solicitudes_Model_DbTable_Publicacionproyectos();

		if(isset($datos["codpublicacion"]) && !empty($datos["codpublicacion"])) {
			$row = $Table->find($datos["codpublicacion"])->current();
			return $row->setFromArray($datos)->save();
		} else {
			unset($datos["codpublicacion"]);
			$key = $Table->createRow($datos)->save();
			return $key;
		}
	}
	/**
	 * Retorna en un array los datos un proyecto de un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return array
	 */
	public function getPublicacionproyecto($codpublicacion) {
		$Table = new Solicitudes_Model_DbTable_Publicacionproyectos();
		return $Table->find($codpublicacion)->current()->toArray();
	}
	/**
	 * Eliminar el registro de un proyecto de un grupo de investigación
	 * @param integer $codgrupo Código del grupo
	 * @return Boolean
	 */
	public function eliminarPublicacionproyecto($codpublicacion) {
		$Table = new Solicitudes_Model_DbTable_Publicacionproyectos();
		return $Table->delete("codpublicacion={$codpublicacion}");
	}
	
	/**Obtiene la lista de los proyectos de los grupos de investigación del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de  grupos de investigación
	 */
	public function getPublicacionesproyecto($codproyecto) {
	    $Table = new Solicitudes_Model_DbTable_Publicacionproyectos();
	    $where = "codproyecto={$codproyecto}";
		return $Table->fetchAll($where);
	}
	
	/**Obtiene en un array la lista de los grupos de investigación del proceso
	 * @param integer $codproceso Código del proceso
	 * @param array Datos de  grupos de investigación
	 */
	public function asignarPublicacionesproyectos ($datos) {
		foreach ($datos as $key => $value):
		    $datos[$key]["publicaciones"] = $this->getPublicacionesproyecto($value["codproyecto"]);
		endforeach;
		
		return $datos;
	}
}//fin de la clase